﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data.Entity;
using System.Data.SqlClient;
using ddcCajamarca.BusinessEntities.Directorio;
using ddcCajamarca.Repository.Directorio.Service;

namespace ddcCajamarca.Repository.Directorio
{
    public class TipoOrganizacionRepository:MasterRepository,ITipoOrganizacionRepository
    {

        public TipoOrganizacion GetFromTipoOrganizacionbyId(int id)
        {
            return Context.TipoOrganizaciones.Find(id);
        }

        public IEnumerable<TipoOrganizacion> GetAllTipoOrganizacion()
        {
            var query = Context.Database.SqlQuery<TipoOrganizacion>("dbo.ShowAllTipoOrganizacion").ToList();

            return query;
        }

        public void AddTipoOrganizacion(TipoOrganizacion tipoOrganizacion)
        {
            Context.Database.ExecuteSqlCommand("dbo.NewOrEditTipoOrganizacion @id= '"
                + tipoOrganizacion.Id + "', @Nombre = '"
                + tipoOrganizacion.Nombre + "', @Descripcion = '"
                + tipoOrganizacion.Descripcion + "'");
        }

        public void UpdateTipoOrganizacion(TipoOrganizacion tipoOrganizacion)
        {
            Context.Database.ExecuteSqlCommand("dbo.NewOrEditTipoOrganizacion @id= '"
                + tipoOrganizacion.Id + "', @Nombre = '"
                + tipoOrganizacion.Nombre + "', @Descripcion = '"
                + tipoOrganizacion.Descripcion + "'");
        }

        public void DeleteTipoOrganizacion(int id)
        {
            var existe = GetFromTipoOrganizacionbyId(id);

            if (existe != null)
            {
                Context.Database.ExecuteSqlCommand("dbo.DeleteTipoOrganizacion @id = '" + id + "'");
            }
        }
        
        public IEnumerable<TipoOrganizacion> GetTipoOrganizacionByCriterio(string criterio)
        {
            IEnumerable<TipoOrganizacion> query;

            if (String.IsNullOrEmpty(criterio))
            {
                query = GetAllTipoOrganizacion();
            }
            else
            {
                query = Context.Database.SqlQuery<TipoOrganizacion>("dbo.ShowTipoOrganizacionByCriterio @nombre = '" + criterio + "'").ToList();
            }

            return query;
        }
        
        public IEnumerable<TipoOrganizacion> GetAllTipoOrganizacionLista()
        {
            var query = Context.Database.SqlQuery<TipoOrganizacion>("dbo.ShowAllTipoOrganizacionLista").ToList();

            return query;
        }
    }
}
